package com.ruoyi.system.domain.survey;

import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 问卷对象 survey_questionnaire
 * 
 */
public class SurveyQuestionnaire extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 问卷ID */
    private Long surveyId;

    /** 问卷标题 */
    @Excel(name = "问卷标题")
    private String title;

    /** 问卷描述 */
    @Excel(name = "问卷描述")
    private String description;

    /** 开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date startTime;

    /** 结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date endTime;

    /** 状态（0草稿 1待审核 2已发布 3已结束 4已归档） */
    @Excel(name = "状态", readConverterExp = "0=草稿,1=待审核,2=已发布,3=已结束,4=已归档")
    private String status;

    /** 是否匿名（0实名 1匿名） */
    @Excel(name = "是否匿名", readConverterExp = "0=实名,1=匿名")
    private Integer anonymous;

    /** 提交后是否显示结果（0不显示 1显示） */
    @Excel(name = "是否显示结果", readConverterExp = "0=不显示,1=显示")
    private Integer showResult;

    /** 提交后提示语 */
    private String submitTip;

    /** 是否需要审批（0不需要 1需要） */
    @Excel(name = "是否需要审批", readConverterExp = "0=不需要,1=需要")
    private Integer approvalRequired;

    /** 审批人ID */
    private Long approvalUserId;
    
    /** 审批人姓名 */
    @Excel(name = "审批人")
    private String approvalUserName;

    /** 审批时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "审批时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date approvalTime;

    /** 审批意见 */
    @Excel(name = "审批意见")
    private String approvalOpinion;

    /** 目标部门IDs，多个用逗号分隔 */
    private String targetDeptIds;
    
    /** 目标部门名称，用于展示 */
    private String targetDeptNames;

    /** 目标角色IDs，多个用逗号分隔 */
    private String targetRoleIds;
    
    /** 目标角色名称，用于展示 */
    private String targetRoleNames;

    /** 目标用户IDs，多个用逗号分隔 */
    private String targetUserIds;
    
    /** 目标用户名称，用于展示 */
    private String targetUserNames;

    /** 回答数量 */
    @Excel(name = "回答数量")
    private Integer answerCount;

//    /** 访问数量 */
//    @Excel(name = "访问数量")
//    private Integer visitCount;
    
    /** 问题列表 */
    private List<SurveyQuestion> questions;

    public Long getSurveyId() {
        return surveyId;
    }

    public void setSurveyId(Long surveyId) {
        this.surveyId = surveyId;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Date getStartTime() {
        return startTime;
    }

    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }

    public Date getEndTime() {
        return endTime;
    }

    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public Integer getAnonymous() {
        return anonymous;
    }

    public void setAnonymous(Integer anonymous) {
        this.anonymous = anonymous;
    }

    public Integer getShowResult() {
        return showResult;
    }

    public void setShowResult(Integer showResult) {
        this.showResult = showResult;
    }

    public String getSubmitTip() {
        return submitTip;
    }

    public void setSubmitTip(String submitTip) {
        this.submitTip = submitTip;
    }

    public Integer getApprovalRequired() {
        return approvalRequired;
    }

    public void setApprovalRequired(Integer approvalRequired) {
        this.approvalRequired = approvalRequired;
    }

    public Long getApprovalUserId() {
        return approvalUserId;
    }

    public void setApprovalUserId(Long approvalUserId) {
        this.approvalUserId = approvalUserId;
    }

    public String getApprovalUserName() {
        return approvalUserName;
    }

    public void setApprovalUserName(String approvalUserName) {
        this.approvalUserName = approvalUserName;
    }

    public Date getApprovalTime() {
        return approvalTime;
    }

    public void setApprovalTime(Date approvalTime) {
        this.approvalTime = approvalTime;
    }

    public String getApprovalOpinion() {
        return approvalOpinion;
    }

    public void setApprovalOpinion(String approvalOpinion) {
        this.approvalOpinion = approvalOpinion;
    }

    public String getTargetDeptIds() {
        return targetDeptIds;
    }

    public void setTargetDeptIds(String targetDeptIds) {
        this.targetDeptIds = targetDeptIds;
    }

    public String getTargetDeptNames() {
        return targetDeptNames;
    }

    public void setTargetDeptNames(String targetDeptNames) {
        this.targetDeptNames = targetDeptNames;
    }

    public String getTargetRoleIds() {
        return targetRoleIds;
    }

    public void setTargetRoleIds(String targetRoleIds) {
        this.targetRoleIds = targetRoleIds;
    }

    public String getTargetRoleNames() {
        return targetRoleNames;
    }

    public void setTargetRoleNames(String targetRoleNames) {
        this.targetRoleNames = targetRoleNames;
    }

    public String getTargetUserIds() {
        return targetUserIds;
    }

    public void setTargetUserIds(String targetUserIds) {
        this.targetUserIds = targetUserIds;
    }

    public String getTargetUserNames() {
        return targetUserNames;
    }

    public void setTargetUserNames(String targetUserNames) {
        this.targetUserNames = targetUserNames;
    }

    public Integer getAnswerCount() {
        return answerCount;
    }

    public void setAnswerCount(Integer answerCount) {
        this.answerCount = answerCount;
    }

//    public Integer getVisitCount() {
//        return visitCount;
//    }
//
//    public void setVisitCount(Integer visitCount) {
//        this.visitCount = visitCount;
//    }

    public List<SurveyQuestion> getQuestions() {
        return questions;
    }

    public void setQuestions(List<SurveyQuestion> questions) {
        this.questions = questions;
    }

    @Override
    public String toString() {
        return "SurveyQuestionnaire [surveyId=" + surveyId + ", title=" + title + ", status=" + status + "]";
    }
} 